package com.beiding.v2.test.pg;

import com.beiding.v2.base.IContext;
import com.beiding.v2.base.IUnit;
import com.beiding.v2.base.IUnitContainer;
import com.beiding.v2.base.IUnitHandler;

import java.util.List;

public class ContainerHandler implements IUnitHandler<IUnitContainer> {

    @Override
    public boolean canHandle(IUnit unit) {
        return unit instanceof IUnitContainer;
    }

    @Override
    public String handle(IContext context, IUnitContainer unit) {
        List<IUnit> children = unit.getChildren();
        String join = ContentUtils.join(children, u -> u.build(context), " ");
        if (unit.isInner()) {
            return "(" + join + ")";
        } else {
            return join;
        }
    }
}
